    friend class boost::serialization::access;

	template<class Archive>
    inline void save(Archive & ar, const unsigned int version) const
    {
		int rows = this->rows();
		int cols = this->cols();
		ar << boost::serialization::make_nvp("rows", rows) << boost::serialization::make_nvp("cols", cols)
			<< boost::serialization::make_nvp("data",
				boost::serialization::make_array(&(this->operator()(0)), this->size()));
    }

	template<class Archive>
    inline void load(Archive & ar, const unsigned int version)
    {
		int rows, cols;
		ar >> boost::serialization::make_nvp("rows", rows) >> boost::serialization::make_nvp("cols", cols);
		this->resize(rows, cols);
		ar >> boost::serialization::make_nvp("data",
				boost::serialization::make_array(&(this->operator()(0)), this->size()));
   }

	BOOST_SERIALIZATION_SPLIT_MEMBER()

